Merge "Fix test to match behavior of OpenJDK and RI"
diff --git a/luni/src/test/java/libcore/java/util/GregorianCalendarTest.java b/luni/src/test/java/libcore/java/util/GregorianCalendarTest.java
index b2c50b2..521ebb5 100644
--- a/luni/src/test/java/libcore/java/util/GregorianCalendarTest.java
+++ b/luni/src/test/java/libcore/java/util/GregorianCalendarTest.java
@@ -17,40 +17,49 @@
 package libcore.java.util;
 
 
-import junit.framework.TestCase;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+import junit.framework.TestCase;
 
 public class GregorianCalendarTest extends TestCase {
 
-    // https://code.google.com/p/android/issues/detail?id=61993
+    private static final TimeZone LOS_ANGELES = TimeZone.getTimeZone("America/Los_Angeles");
+
+    // Documented a previous difference in behavior between this and the RI, see
+    // https://code.google.com/p/android/issues/detail?id=61993 for more details.
+    // Switching to OpenJDK has fixed that issue and so this test has been changed to reflect
+    // the correct behavior.
     public void test_computeFields_dayOfWeekAndWeekOfYearSet() {
-        Calendar greg = GregorianCalendar.getInstance();
+        Calendar greg = new GregorianCalendar(LOS_ANGELES, Locale.ENGLISH);
+
+        // Ensure we use different values to the default ones.
+        int differentWeekOfYear = greg.get(Calendar.WEEK_OF_YEAR) == 1 ? 2 : 1;
+        int differentDayOfWeek = greg.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY
+                ? Calendar.TUESDAY : Calendar.MONDAY;
 
         // Setting WEEK_OF_YEAR and DAY_OF_WEEK with an intervening
         // call to computeFields will work.
-        greg.set(Calendar.WEEK_OF_YEAR, 1);
-        assertEquals(1, greg.get(Calendar.WEEK_OF_YEAR));
-        greg.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
-        assertEquals(1, greg.get(Calendar.WEEK_OF_YEAR));
+        greg.set(Calendar.WEEK_OF_YEAR, differentWeekOfYear);
+        assertEquals(differentWeekOfYear, greg.get(Calendar.WEEK_OF_YEAR));
+        greg.set(Calendar.DAY_OF_WEEK, differentDayOfWeek);
+        assertEquals(differentWeekOfYear, greg.get(Calendar.WEEK_OF_YEAR));
 
         // Setting WEEK_OF_YEAR after DAY_OF_WEEK with no intervening
         // call to computeFields will work.
-        greg = GregorianCalendar.getInstance();
-        greg.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
-        greg.set(Calendar.WEEK_OF_YEAR, 1);
-        assertEquals(1, greg.get(Calendar.WEEK_OF_YEAR));
-        assertEquals(Calendar.MONDAY, greg.get(Calendar.DAY_OF_WEEK));
+        greg = new GregorianCalendar(LOS_ANGELES, Locale.ENGLISH);
+        greg.set(Calendar.DAY_OF_WEEK, differentDayOfWeek);
+        greg.set(Calendar.WEEK_OF_YEAR, differentWeekOfYear);
+        assertEquals(differentWeekOfYear, greg.get(Calendar.WEEK_OF_YEAR));
+        assertEquals(differentDayOfWeek, greg.get(Calendar.DAY_OF_WEEK));
 
-        // Setting DAY_OF_WEEK *after* WEEK_OF_YEAR with no intervening computeFields
-        // will make WEEK_OF_YEAR have no effect. This is a limitation of the API.
-        // Combinations are chosen based *only* on the value of the last field set,
-        // which in this case is DAY_OF_WEEK.
-        greg = GregorianCalendar.getInstance();
-        int weekOfYear = greg.get(Calendar.WEEK_OF_YEAR);
-        greg.set(Calendar.WEEK_OF_YEAR, 1);
-        greg.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
-        // Unchanged WEEK_OF_YEAR.
-        assertEquals(weekOfYear, greg.get(Calendar.WEEK_OF_YEAR));
+        // Setting DAY_OF_WEEK after WEEK_OF_YEAR with no intervening
+        // call to computeFields will work.
+        greg = new GregorianCalendar(LOS_ANGELES, Locale.ENGLISH);
+        greg.set(Calendar.WEEK_OF_YEAR, differentWeekOfYear);
+        greg.set(Calendar.DAY_OF_WEEK, differentDayOfWeek);
+        assertEquals(differentWeekOfYear, greg.get(Calendar.WEEK_OF_YEAR));
+        assertEquals(differentDayOfWeek, greg.get(Calendar.DAY_OF_WEEK));
     }
 }